package checker.algorithms.sort.primarySort;

import checker.algorithms.sort.SortBase;

public class Selection extends SortBase {
    /**
     * 选择出第i位小的数字
     *
     * i 循环 n，j 也循环n
     *  => n*n
     *
     * @param a
     */
    @Override
    public void sort(Comparable[] a) {

        int length = a.length;
        for (int i = 0; i < length; i++) {
            // 从第i个开始，选出最小值，默认第i个最小
            int min = i;
            for (int j = i; j < length; j++) {
                // a[j] < a[min]
                if (less(a[j], a[min])) {
                    min = j;
                }
            }
            // 把a的i位和min位调换
            exch(a, i, min);
        }

        System.out.println(isSorted(a));
    }

    public static void main(String[] args) {
        new Selection().run();
    }
}
